import store from '@/store'

// 登录检查指令(Vue 3版本)
const LoginDirective = {
	mounted(el, binding) {
		// 获取绑定值和参数
		const value = binding.value;
		const arg = binding.arg;
		// 创建点击事件处理器
		const handler = async (e) => {
			// 阻止事件默认行为和冒泡
			e.preventDefault();
			e.stopPropagation();

			try {
				// 检查登录状态
				const isLogin = store.state.auth.token;

				if (!isLogin) {
					// 未登录处理
					uni.navigateTo({
						url: '/pages/login/login',
						success: () => {
							console.log('已跳转至登录页');
						},
						fail: (err) => {
							console.error('跳转登录页失败:', err);
						}
					});
					return;
				}
				// 已登录执行绑定方法
				if (typeof value === 'function') {
					value();
				} else if (typeof value === 'object' && value.handler) {
					value.handler();
				}
			} catch (error) {
				console.error('登录验证失败:', error);
			}
		};
		// 保存引用以便卸载
		el._loginHandler = handler;
		el.addEventListener('click', handler);
	},
	unmounted(el) {
		if (el._loginHandler) {
			el.removeEventListener('click', el._loginHandler);
			delete el._loginHandler;
		}
	}
}

// 默认导出
export default LoginDirective